public function script( $script:Array ):void{
	var i:int, j:int;
	if( $script ){
		for( i = 0 , j = $script.length ; i < j ; ++i ){
			script_( $script[i] );
		}
	}
}
private function script_( $value:* ):*{
	var i:int, j:int, val:*, arg:Array;
	if( $value is Array ){
		$value = $value.concat();
		val = scriptVar( $value[0] );
		if( val is Function ){
			arg = [];
			for( i = 1 , j = $value.length ; i < j ; ++i ){
				arg[arg.length] = script_( $value[i] );
			}
			if( arg.length ){
				return val.apply( null, arg );
			}else{
				return val.apply( null, null );
			}
		}else{
			for( i = 0 , j = $value.length ; i < j ; ++i ){
				$value[i] = script_( $value[i] );
			}
			return $value;
		}
	}else{
		return scriptVar( $value );
	}
}
private function scriptVar( $value:* ):*{
	var i:int, j:int, val:*, temp:*;
	if( $value is String ){
		switch( $value.substr( 0, 6 ) ){
		case'param.':
			temp = $value.split( '.' );
			val = param;
			for( i = 1, j = temp.length ; i < j ; ++i ){
				val = val[temp[i]];
			}
			break;
		case'local.':
			temp = $value.split( '.' );
			val = local;
			for( i = 1, j = temp.length ; i < j ; ++i ){
				val = val[temp[i]];
			}
			break;
		case'global':
			temp = $value.split( '.' );
			val = global;
			for( i = 1, j = temp.length ; i < j ; ++i ){
				val = val[temp[i]];
			}
			break;
		case'eachs.':
			temp = $value.split( '.' );
			val = eachs[temp[1]];
			for( i = 2, j = temp.length ; i < j ; ++i ){
				val = val[temp[i]];
			}
			break;
		case'treev.':
			temp = $value.split( '.' );
			val = treeVar;
			for( i = 1, j = temp.length ; i < j ; ++i ){
				val = val[temp[i]];
			}
			break;
		case'tdata.':
			temp = $value.split( '.' );
			val = tdata( temp[1] );
			for( i = 2, j = temp.length ; i < j ; ++i ){
				val = val[temp[i]];
			}
			break;
		default:
			val = $value;
		}
		return val;
	}else{
		return $value;
	}
}
private function scriptPre( $script:Array ):Array{
	var i:int, j:int;
	for( i = 0 , j = $script.length ; i < j ; ++i ){
		if( $script[i] is Array ){
			scriptPre( $script[i] );
		}else if( $script[i] is String ){
			$script[i] = scriptTrans( $script[i] );
		}
	}
	return $script;
}
//private function scriptFunction( $script:Array ):void{
//	var i:int, j:int, k:int, temp:*, f:String, flow:Function;
//	for( i = 0, j = $script.length ; i < j ; ++i ){
//		temp = $script[i];
//		if( temp is Array ){
//			scriptFunction.apply( null, temp );
//		}else if( temp is String ){
//			$script[i] = scriptTrans( temp );
//		}
//	}
//}
private function scriptTrans( $script:String ):*{
	var i:int, flow:*;
	if( $script === 'null' ){
		return null;
	}else if( $script.charAt(0) === "'" ){
		i = $script.length - 1;
		if( i === 0 ){
			return '';
		}else{
			return $script.substr( 1 );
		}
	}else{
		flow = flowGet( $script );
		if( flow ){
			return flow;
		}else{
			return $script;
		}
	}
}